﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace C_初级教程
{
    /// <summary>
    /// 方法重载 (overLoad:重载 ，override:重写) 
    /// </summary>
    internal class 方法重载
    {

        /**     
         *      允许我们在同一个类中定义多个方法名相同、参数列表（参数类型，参数个
                数）不同的方法，这样的形式我们称为方法重载
                调用时编译器会根据实际传入参数的形式，选择与其匹配的方法执
        **/

        /**
         * 
         * 构成方法重载的条件
                
                ①、方法名相同。
                ②、方法参数类型不同或者参数个数不同，返回类型不同也行。
                ③、在同一个类中。
        **/

        //方法1
        static int Avg(int num1, int num2, int num3)
        {
            return (num1 + num2 + num3) / 3;
        }
        // 方法2：与方法1，参数类型不同，构成重载
        static decimal Avg(decimal num1, decimal num2, decimal num3)
        {
            return (num1 + num2 + num3) / 3.0m;
        }
        // 方法3：与方法2，参数个数不同，构成重载
        static decimal Avg(decimal num1, decimal num2)
        {
            return (num1 + num2) / 2.0m;
        }
    }
}
